package create;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2023-01-11
 * Time: 12:23
 */

//Callable 匿名内部类
public class Demo7 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        FutureTask<Integer> futureTask = new FutureTask<>(new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {
                for (int i = 0; i < 10; i++) {
                    System.out.println(i);
                }
                return null;
            }
        });
        //创建线程
        Thread thread = new Thread(futureTask);
        //启动线程
        thread.start();
        //得到线程的执行结果
        int result = futureTask.get();
        System.out.println(result);
    }
}

//总结来看 线程的创建有3大类 7中实现方式 在不需要线程执行结果的情况下 推荐使用Lambda来创建
//如果想要获取到线程的执行结果 可以使用FutureTask + Callable来实现